home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 18 / CU Amiga Magazine's Super CD-ROM 18 (1997)(EMAP Images)(GB)[!][issue 1998-01].iso / CUCD / Programming / AmigaE / Src / OOmodules / list / doublylinked / test.e < prev   
Encoding:
Text File  |  1995-09-10  |  1.7 KB  |  88 lines

  1. /*
  2.  
  3. This is the original example program of the module that is now
  4. oomodules/list/doublylinked. I didn't change a single byte.
  5.  
  6. Gregor Goldbach 95/7/3
  7.  
  8. Added WriteF() of length.
  9.  
  10. Gregor Goldbach 95/9/10
  11.  
  12. */
  13.  
  14. /*=== EXAMPLE PROGRAM ===*/
  15.  
  16. MODULE 'oomodules/list/doublylinked'
  17.  
  18. OBJECT mynode OF dlln
  19.   string
  20. ENDOBJECT
  21.  
  22. OBJECT mylist OF dllh
  23. ENDOBJECT
  24.  
  25. PROC new(string) OF mynode
  26.   DEF len
  27.   self.string:=StrCopy(String(len:=StrLen(string)), string, len)
  28. ENDPROC
  29.  
  30. PROC end() OF mynode
  31.   DisposeLink(self.string)
  32. ENDPROC
  33.  
  34. PROC clear() OF mylist
  35.   DEF node:PTR TO mynode
  36.   WHILE self.isEmpty()=FALSE
  37.     node:=self.remHead()
  38.     END node
  39.   ENDWHILE
  40. ENDPROC
  41.  
  42. PROC insertAlphaSorted(node:PTR TO mynode) OF mylist
  43.   DEF listnode:PTR TO mynode, done=FALSE
  44.   listnode:=self.firstNode() ->returns lastnode or tail
  45.   REPEAT
  46.     IF listnode=self.tail
  47.       done:=TRUE
  48.     ELSEIF OstrCmp(node.string, listnode.string)>=0
  49.       done:=TRUE
  50.     ELSE
  51.       listnode:=listnode.succ
  52.     ENDIF
  53.   UNTIL done
  54.   self.insert(node, listnode.pred)
  55. ENDPROC
  56.  
  57. PROC printAll() OF mylist
  58.   DEF node:PTR TO mynode
  59.   IF self.isEmpty()
  60.     WriteF('*** List is empty\n')
  61.     RETURN
  62.   ENDIF
  63.   node:=self.firstNode()
  64.   WHILE node<>self.tail
  65.     WriteF('\s\n', node.string)
  66.     node:=node.succ
  67.   ENDWHILE
  68. ENDPROC
  69.  
  70.  
  71. PROC main() HANDLE
  72.   DEF l:PTR TO mylist, n:PTR TO mynode
  73.   NEW l.new()
  74.   l.insertAlphaSorted(NEW n.new('AC/DC'))
  75.   l.insertAlphaSorted(NEW n.new('Megadeth'))
  76.   l.insertAlphaSorted(NEW n.new('Alice in Chains'))
  77.   l.insertAlphaSorted(NEW n.new('Metallica'))
  78.  
  79. EXCEPT DO
  80.   IF exception THEN WriteF('Error occurred during initialization\n')
  81.   IF l
  82.     l.printAll()
  83.     WriteF('\nThe list contains \d items.\n', l.length())
  84.     l.clear()
  85.     END l
  86.   ENDIF
  87. ENDPROC
  88.